#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>

MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
{
    // 重置窗口大小
    resize(600, 400);

    // ------------菜单栏---------------
    // 菜单栏创建， 最多只能有一个
    auto *bar = menuBar();
    // 将菜单栏放入窗口中，菜单栏为空时不会显示
    setMenuBar(bar);
    // 创建菜单，菜单为空时，MacOS上不会显示，Windows上显示
    auto *fileMenu = bar->addMenu("文件");
    auto *editMenu = bar->addMenu("编辑");

    // 创建菜单项
    auto *newAction = fileMenu->addAction("新建");
    // 添加分隔线
    fileMenu->addSeparator();
    auto *openAction = fileMenu->addAction("打开");

    // -------工具栏-----------
    // 工具栏  可以有多个
    auto *toolBar = new QToolBar(this);
//    addToolBar(toolBar);    // 默认放在上方
    addToolBar(Qt::LeftToolBarArea, toolBar);
    // 设置 只允许 左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
    // 设置浮动
    toolBar->setFloatable(false);
    // 设置移动 总开关
    toolBar->setMovable(false);
    // 工具栏中可以设置内容
    toolBar->addAction(newAction);
    // 添加分割线
    toolBar->addSeparator();
    toolBar->addAction(openAction);
    // 工具栏中添加控件
    auto *btn = new QPushButton("aa", this);
    toolBar->addWidget(btn);

    // --------状态栏-----------
    // 状态栏  最多有一个
    auto *stBar = statusBar();
    // 设置到窗口中
    setStatusBar(stBar);
    // 放标签控件
    auto *label = new QLabel("提示信息", this);
    stBar->addWidget(label);
    auto *label2 = new QLabel("右侧提示信息", this);
    stBar->addPermanentWidget(label2);

    // ------ 铆接部件（浮动窗口） ----------
    // 铆接部件（浮动窗口） 可以有多个
    auto *dockWidget = new QDockWidget("浮动窗口", this);
    addDockWidget(Qt::BottomDockWidgetArea, dockWidget);
    // 设置后期停靠区域。只允许上下
    dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

    // ------------ 中心部件-------------
    // 设置中心部件 只能一个
    auto *edit = new QTextEdit(this);
    setCentralWidget(edit);
}

MainWindow::~MainWindow()
{
}

